Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Common uses for flash memory include portable computers, personal digital assistants (PDAs), digital cameras, and cellular telephones. Program code, system data such as a basic input/output system (BIOS), and other firmware can typically be stored in flash memory devices.
Flash memory operations such as erase and program are accomplished using complex algorithms composed of many different steps and requiring control over timing, counter, and analog voltages. For example, a word program operation is typically a loop of program pulses and program verifies until the desired value is written and verified with an appropriate voltage margin.
A circuit typically referred to as an algorithm controller is designed to manage the execution of the various complex steps of memory operations. The algorithm controller must track the steps of the operation even when one operation is suspended in order to service a higher priority operation. The algorithm controller must properly manage the interrupt and then resume the original operation at an appropriate point to allow the suspended operation to be correctly completed.
When a memory device is being developed, the code that makes up the various memory operations must be executed and debugged. However, it is very difficult to determine which step the algorithm controller is executing at any particular time. One method typically used is to read status bit information that the controller stores in control registers. These bits typically contain only general information about the algorithm being executed. No detailed information is provided about any specific step.
Another method for debugging is to perform internal probing using needles that touch internal points of the integrated circuit to detect interesting signal. However, the internal probing cannot detect more than a few signals at the same time and cannot be performed on integrated circuits that are encapsulated in a package.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for an alternative way to test and debug complex algorithms in memory devices.